home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ For TASM / HEAP.PAK / VMTUTIL.INC < prev   
Text File  |  1996-02-21  |  1KB  |  69 lines

  1. ; File: VMTUTIL.INC
  2. ; Copyright (c) 1993 By Borland International, Inc.
  3.  
  4. ;********** VMT Utilities *************
  5. ; Setup area for the VMT segments
  6. if (@CodeSize eq 0)
  7.  
  8. ;*** Handle VMT utilities for small code model programs.
  9.  
  10.     vmtseg macro   ; Macro to switch to where the VMT's are stored
  11.     .code
  12.            endm
  13.  
  14.     @vmtseg = @code
  15.  
  16.     LoadVMTSeg macro reg,tempreg
  17.                push cs
  18.                pop  es
  19.     endm
  20.  
  21.     mptr equ <word>
  22. else
  23.  
  24. ;*** Handle VMT utilities for large and huge code models
  25.  
  26.     ; Declare a separate segment for the VMT's
  27.     vmt_seg segment public
  28.     vmt_seg ends
  29.  
  30.     vmtseg macro
  31.  
  32.     vmt_seg segment
  33.            endm
  34.  
  35.     @vmtseg   = vmt_seg
  36.  
  37.     LoadVMTSeg_ macro reg,tempreg
  38.     ifidni <reg>,<tempreg>
  39.                mov   reg,@vmtseg
  40.     else
  41.                mov   tempreg,@vmtseg
  42.                mov   reg,tempreg
  43.     endif
  44.     endm
  45.  
  46.     LoadVMTSeg  macro reg,tempreg
  47.     ifb    <tempreg>
  48.                push  bx
  49.               ; Use BX as the temp since it is destroyed during the call!
  50.                LoadVMTSeg_ reg,bx
  51.                pop   bx
  52.     else
  53.                LoadVMTSeg_ reg,tempreg
  54.     endif
  55.                endm
  56.  
  57.     mptr equ <dword>
  58. endif
  59.  
  60.  
  61. MAKE_VMT   macro
  62. vmtseg
  63. TBLINST     ; Create the virtual table for the memory_block
  64. ends
  65. .code
  66.            endm
  67.  
  68.  
  69.